package edu.qd.learn.newchapter.chapter_thread.day01;

/**
 * 线程安全问题案例
 *
 * @author 布衣
 */
public class ThirdThread extends Thread {

    /**
     * 保证线程案例
     *  synchronized 关键字 放到方法上面，用来表示当前方法所在的类，是线程安全的。
     *  表示这个类的多个实现，只能有一个线程进入到这个方法里面来
     *
     */
    public synchronized void getStore(){
        //取库存的代码

        //1 判断现有库存

        //2 如果>购买数，则减库存

        //3 如果<购买数，则提示库存不足

    }

    private Object o = new Object();

    public  void getStoreOne(){
        synchronized(o){
            //取库存的代码

            //1 判断现有库存

            //2 如果>购买数，则减库存

            //3 如果<购买数，则提示库存不足
        }
    }

    private Object o1 = new Object();

    public  void getStoreTwo(){
        synchronized(o1){
            //取库存的代码

            //1 判断现有库存

            //2 如果>购买数，则减库存

            //3 如果<购买数，则提示库存不足
        }
    }
}
